/******************************************************************************
 *
 * Project:		SerwerSemaforow
 * File:		messages.h
 * Author:		karooolek
 * Created on:	2010-01-09
 *
 ******************************************************************************/

#ifndef MESSAGES_H_
#define MESSAGES_H_

#include "types.h"

/**
 * Typy wiadomosci
 */
enum MessageType
{
	MSG_SUCCESS = 0,	//!< MSG_SUCCESS operacja powiod�a si�
	MSG_FAILURE = 1,   	//!< MSG_FAILURE operacja nie powiod�a si�
	MSG_GREETING = 2,  	//!< MSG_GREETING przywitanie z serwerem/klientem
	MSG_CREATE_SEM = 3,	//!< MSG_CREATES_SEM utworzenie semafora
	MSG_DELETE_SEM = 4,	//!< MSG_DELETE_SEM usuni�cie semafora
	MSG_P_SEM = 5,     	//!< MSG_P_SEM opuszczenie semafora
	MSG_V_SEM = 6,     	//!< MSG_V_SEM podniesienie semafora
	MSG_DEADLOCK = 7,  	//!< MSG_DEADLOCK wykryta blokada
	MSG_PING = 8,      	//!< MSG_PING ping
	MSG_EXIT =9        	//!< MSG_EXIT zako�czenie po��czenia
};

/**
 * Wiadomosc informacyjna.
 */
struct InfoMessage
{
	char type;
};

/**
 * Wiadomo�� z nazw� klienta
 */
struct ClientMessage
{
	char type;
	char clientName[32];
};

/**
 * Wiadomo�� z nazw� klienta i semafora
 */
struct SemaphoreMessage
{
	char type;
	char semName[32];
};

/**
 * Wiadomo�� z nazw� klienta i podejrzanego o zakleszczenie
 * klienta.
 */
struct DeadlockMessage
{
	char type;
	char clientName[32];
	char suspectName[32];
};

union AnyMessage
{
	InfoMessage info;
	ClientMessage client;
	SemaphoreMessage sem;
	DeadlockMessage deadlock;
};

#endif // MESSAGES_H_
